#ifndef IBUNDLE_H
#define IBUNDLE_H

#include "AutoPtr.h"
#include <string>
#include "hmpbundleframe_global.h"



class IBundleActivator;
class IBundleContext;

HMPBUNDLEFRAMESHARED_EXPORT class IBundle
{
public:
    typedef AutoPtr<IBundle> Ptr;

    enum State {

        UNINSTALLED = 0x00000001,

        INSTALLED = 0x00000002,

        RESOLVED = 0x00000004,

        STARTING = 0x00000008,

        STOPPING = 0x00000010,

        ACTIVE = 0x00000020
    };

    IBundle(){}

    virtual ~IBundle(){}

    virtual State getState() const = 0;

    virtual const std::string getPath() const = 0;

    virtual const std::string getName() const = 0;

    virtual const std::string getVendor() const = 0;

    virtual const std::string getCopyright() const = 0;

    virtual const std::string getActivatorClass() const = 0;

    virtual const std::string getActivatorLibrary() const = 0;

    virtual IBundleActivator* getActivator() const = 0;

    virtual IBundleContext* getBundleContext() const = 0;

private:

};

#endif // IBUNDLE_H
